﻿using System;
using System.Windows.Forms;
using System.Data;
using Gencode.PrsCommon.Data.Abteilung;

namespace Gencode.PrsUtil.Controls
{
	public class PUAbteilungComboBox : ComboBox
	{
		DataView m_abteilungen;
		string m_mandid;

		public PUAbteilungComboBox()
			: base()
		{

		}

		protected override void InitLayout()
		{
			base.InitLayout();
		}

		protected override void Dispose(bool disposing)
		{
			if (m_abteilungen != null)
				m_abteilungen.Dispose();

			base.Dispose(disposing);
		}

		public void InitData(string mandid)
		{
			Mandid = mandid;
			RefreshData();
		}

		public void RefreshData()
		{
			m_abteilungen = AbteilungData.GetAbteilungen(Mandid, true);
			DataSource = m_abteilungen;
			DisplayMember = "name";
		}


		public string Mandid
		{
			private get
			{
				if (m_mandid == null)
					m_mandid = string.Empty;
				return m_mandid;
			}
			set
			{
				m_mandid = value;
			}
		}

		public string SelectedAbteilungName
		{
			get
			{
				if (SelectedIndex >= 0 &&
					m_abteilungen != null &&
					m_abteilungen.Count > SelectedIndex)
					return m_abteilungen[SelectedIndex].Row["name"].ToString();

				return string.Empty;
			}
		}

		public string SelectedAbteilungBeschreibung
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_abteilungen[SelectedIndex].Row["abteilungid"].ToString() != null &&
						m_abteilungen[SelectedIndex].Row["abteilungid"].ToString() != string.Empty)
						return AbteilungData.GetBeschreibungLangtext(int.Parse(m_abteilungen[SelectedIndex].Row["abteilungid"].ToString()));

				return string.Empty;
			}
		}

		public int SelectedAbteilungID
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_abteilungen[SelectedIndex].Row["abteilungid"].ToString() != null &&
						m_abteilungen[SelectedIndex].Row["abteilungid"].ToString() != string.Empty)
						return int.Parse(m_abteilungen[SelectedIndex].Row["abteilungid"].ToString());

				return 0;
			}
		}

		public string SelectedAbteilungStunden
		{
			get
			{
				if (SelectedIndex >= 0)
					if (m_abteilungen != null &&
						m_abteilungen.Count > SelectedIndex)
						return m_abteilungen[SelectedIndex].Row["einsatzprotag"].ToString();

				return string.Empty;
			}
		}

		public void SetIndexAt(int prsid)
		{
			for (int i = 0; i < m_abteilungen.Count; i++)
			{
				if (m_abteilungen[i].Row["abteilungid"].ToString() != string.Empty)
				{
					if (int.Parse(m_abteilungen[i].Row["abteilungid"].ToString()) == prsid)
					{
						SelectedIndex = i;
						i = m_abteilungen.Count;
					}
				}
			}
		}

	}
}
